package com.hbsi.demo1;

import com.mysql.jdbc.Driver;

import java.sql.*;

import static java.lang.Class.forName;

/**
 * @author 程奕红
 * @version 1.0
 */
public class TestJdbc1 {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        getAllUsers();
    }
    //对users进行访问

    public static void getAllUsers() throws ClassNotFoundException, SQLException {
        // 1. 载入驱动,将指定的驱动程序载入内容，并在驱动管理器中注册
        Class.forName("com.mysql.jdbc.Driver");
        //和数据库建立连接需要三个参数（url、username、password)
         // 2. 建立连接，使用驱动管理器中的getConnect()方法来建立连接，如果建立成功，则返回Connection对象
        //和数据库建立连接时需要三个参数，url表示连接的数据库的地址，username表示连接数据库时使用的用户名，password表示连接数据库使用的密码
        //url的格式：父协议：子协议：//数据库服务器的ip地址：端口号/数据库名字
        //          jdbc :mysql://localhost   33-6//myjdbc
        //如果ip地址是本机的，端口号是默认的本地mysql3306,那么可以简化:jdbc:mysql:///myjdbc  中间的/不能省略
        //
        String url="jdbc:mysql://localhost:3306/myjdbc";
        String username="root";
        String password="root";
    //抛的异常都是在sql包中
       Connection con= DriverManager.getConnection(url,username,password);
        System.out.println(con);
            //3.生成语句对象，负责提交SQL语句,调用链接对象con 的createStatement()方法创建语句对象（Statement)的对象
        Statement statement= con.createStatement();
        String sql="select*from users";

        //语句对象中有三个方法负责提交不同的sql语句，ex
        //statement.executeQuery();
        ResultSet res=statement.executeQuery(sql);
             // 4.返回结果，处理返回结果,读取结果集
        //ResultSet中有next()移动指针，让指针指向下一行，让指针指向下一行，如果还有数据可以读，返回true:如果移动到最后一行的后面，返回false.
        //一开始指针指向第一行的前面
        while(res.next()){
            //读取第一行
            //读取指针所指向的那一行数据   ResultSet中有很多getXXX方法来读取每个字段的值，XXX是由字段的类型来选择
            System.out.println("用户id"+res.getInt(1));
            System.out.println("用户名"+res.getString(2));
            System.out.println("密码"+res.getString(3));
            System.out.println("邮箱"+res.getString(4));
            System.out.println("出生日期"+res.getDate(5));

        }
            //5. 释放资源–关闭对象
            if(res!=null){
                res.close();
            }
            if(statement!=null){
                statement.close();
            }
            if(con!=null){
                con.close();
            }

    }
}
